import { get, post, put, del, request } from '../request.js'

// 用户分析结果管理相关API

/**
 * 创建分析结果
 * @param {Object} data 分析结果数据
 * @param {number} data.userId 用户ID
 * @param {string} data.resultId 分析结果ID
 * @param {string} data.sportType 运动类型
 * @param {string} data.videoFileName 视频文件名
 * @param {string} [data.status='ANALYZING'] 分析状态
 * @param {string} [data.analysisData] 分析数据JSON
 * @param {string} [data.summary] 分析总结
 * @param {string} [data.errorMessage] 错误信息
 * @returns {Promise}
 */
export const createAnalysisResult = (data) => {
    return post('/user-analysis', data)
}

/**
 * 根据ID查询分析结果
 * @param {number} id 分析结果ID
 * @returns {Promise}
 */
export const getAnalysisResultById = (id) => {
    return get(`/user-analysis/${id}`)
}

/**
 * 查询用户的所有分析结果
 * @param {number} userId 用户ID
 * @returns {Promise}
 */
export const getAnalysisResultsByUserId = (userId) => {
    return get(`/user-analysis/user/${userId}`)
}

/**
 * 分页查询用户分析结果
 * @param {number} userId 用户ID
 * @param {Object} pageParam 分页参数
 * @param {number} [pageParam.pageNo=1] 页码
 * @param {number} [pageParam.pageSize=10] 页大小
 * @returns {Promise}
 */
export const pageQueryByUserId = (userId, pageParam) => {
    return get(`/user-analysis/user/${userId}/page`, { params: pageParam })
}

/**
 * 根据运动类型查询分析结果
 * @param {number} userId 用户ID
 * @param {string} sportType 运动类型
 * @returns {Promise}
 */
export const getAnalysisResultsByUserIdAndSportType = (userId, sportType) => {
    return get(`/user-analysis/user/${userId}/sport/${sportType}`)
}

/**
 * 根据用户ID和结果ID查询
 * @param {number} userId 用户ID
 * @param {string} resultId 分析结果ID
 * @returns {Promise}
 */
export const getAnalysisResultByUserIdAndResultId = (userId, resultId) => {
    return get(`/user-analysis/user/${userId}/result/${resultId}`)
}

/**
 * 更新分析结果
 * @param {Object} data 更新数据
 * @param {number} data.id 分析结果ID
 * @param {string} [data.status] 分析状态
 * @param {string} [data.analysisData] 分析数据JSON
 * @param {string} [data.summary] 分析总结
 * @param {string} [data.errorMessage] 错误信息
 * @returns {Promise}
 */
export const updateAnalysisResult = (data) => {
    return put('/user-analysis', data)
}

/**
 * 删除分析结果
 * @param {number} id 分析结果ID
 * @returns {Promise}
 */
export const deleteAnalysisResult = (id) => {
    return del(`/user-analysis/${id}`)
}

/**
 * 批量删除分析结果
 * @param {number[]} ids 分析结果ID数组
 * @returns {Promise}
 */
export const batchDeleteAnalysisResults = (ids) => {
    return request({
        url: '/user-analysis/batch',
        method: 'DELETE',
        data: ids
    })
}

/**
 * 检查所有权
 * @param {number} id 分析结果ID
 * @param {number} userId 用户ID
 * @returns {Promise}
 */
export const checkOwnership = (id, userId) => {
    return get(`/user-analysis/${id}/ownership/${userId}`)
}

// 默认导出所有用户分析结果管理相关API
export default {
    createAnalysisResult,
    getAnalysisResultById,
    getAnalysisResultsByUserId,
    pageQueryByUserId,
    getAnalysisResultsByUserIdAndSportType,
    getAnalysisResultByUserIdAndResultId,
    updateAnalysisResult,
    deleteAnalysisResult,
    batchDeleteAnalysisResults,
    checkOwnership
}